#include <iostream>
#include <string>
//C++中可以省略.h的书写方式
//iostream<=>input output stream

// 使用这个句话的含义是，可以在程序中可以省略std：：前缀
// 命名空间倒入在程序内，程序内可以直接访问命名空间中的类名（结构体）
using namespace std;
int main(int argc,char const *argv[])
{
    string s1 = "hello world"; //  复制初始化
    string s2("hello world"); //    直接初始化
    string s3(10 ,'A');     //直接初始化

    cout << "s1=" << s1 << endl;
    cout << "s2=" << s2 << endl;
    cout << "s3=" << s3 << endl;
    cout << "***********************" << endl;

    // 字符串的输入与输出
    cout << "请输入第1个字符串>:";
    cin >> s1;//    会残留‘\n’, cin读取时会自动跳过‘\n’
    cout << "请输入第2个字符串>:";
    cin >> s2;//    会残留‘\n’, cin读取时会自动跳过‘\n’
    cout << "请输入第3个字符串>:";
    cin >> s3;//    会残留‘\n’, cin读取时会自动跳过‘\n’
    cout << "s1=" << s1 << endl;
    cout << "s2=" << s2 << endl;
    cout << "s3=" << s3 << endl;
    cout << "***********************" << endl;

    // 计算字符串的长度
    cout << "s1 length=" << s1.length() << endl;
    cout << "s2 length=" << s2.length() << endl;
    cout << "s3 length=" << s3.length() << endl;
    cout << "***********************" << endl;

    // 判断字符串是否为空
    s1 = "";
    // 空返回真，非空返回假
    cout << "s1.empty()=" << s1.empty() <<endl;
    // 空返回真，非空返回假
    cout << "s1.empty()=" << s1.empty() <<endl;

    // 可以按照数组下标的形式访问字符串的元素
    s1 = "hello";
    s1[0] = 'H';
    cout << "s1=" <<s1 <<"\n";

    // 字符串的拼接
    s2 ="wold";
    s3 = s1 + " " + s2;
   cout << "s3=" <<s3 <<"\n";

    return 0;
}